/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modulo1;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import Modelo.*;
import Acceso.Security;
import Acceso.FormatUtility;

/**
 *
 * @author miguel474
 */
public class modificarPreReporteAction extends org.apache.struts.action.Action {

    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        String[] a = {"Administrador", "Recibir Pre-Reportes", "Modificar Fecha Pre-Reportes"};
        if (!Security.validateSession(request, a)) {
            Security.privilegeError(response);
            return mapping.findForward("errorPriv");
        }

        modificarPreReporteForm formBean = (modificarPreReporteForm) form;
        ActionErrors errors = new ActionErrors();
        boolean existe_error = false;

        String id = formBean.getIdPreReporte();
        String ingresa = formBean.getIngresa();
        String old_cedula = formBean.getOld_ci();
        String descripcion = formBean.getDescripcion();
        String ubicacion = formBean.getUbicacion();
        String nombre = formBean.getNombre_den();
        String apellido = formBean.getApellido_den();
        String nacCedula = formBean.getNac();
        String numCedula = formBean.getCedula();
        String cedula = nacCedula + "-" + numCedula;
        String telefono = formBean.getTelefono();
        int tlf = new Integer(0);
        
        // validamos el nombre
        if (nombre == null || nombre.length() < 1) {
            errors.add("falta_Nombre", new ActionMessage("errors.falta_Nombre"));
            saveErrors(request, errors);
            existe_error = true;
        } else if (nombre.length() < 2) {
            errors.add("long_Nombre", new ActionMessage("errors.long_Nombre"));
            saveErrors(request, errors);
            existe_error = true;
        } else if (!FormatUtility.validatePattern(nombre, 3)) {
            errors.add("invalid_caracter_N1", new ActionMessage("errors.invalid_caracter_N1"));
            saveErrors(request, errors);
            existe_error = true;
        }
        // validamos el apellido
        if (apellido == null || apellido.length() < 1) {
            errors.add("falta_Apellido", new ActionMessage("errors.falta_Apellido"));
            saveErrors(request, errors);
            existe_error = true;
        } else if (apellido.length() < 2) {
            errors.add("long_Apellido", new ActionMessage("errors.long_Apellido"));
            saveErrors(request, errors);
            existe_error = true;
        } else if (!FormatUtility.validatePattern(apellido, 3)) {
            errors.add("invalid_caracter_A1", new ActionMessage("errors.invalid_caracter_A1"));
            saveErrors(request, errors);
            existe_error = true;
        }

        if ((descripcion == null) || (descripcion.equals(""))) {
            errors.add("pr_faltaDescripcion", new ActionMessage("errors.pr_faltaDescripcion"));
            saveErrors(request, errors);
            existe_error = true;
        }

        // Validamos de cedula
        if (numCedula == null || numCedula.length() < 1) {
            errors.add("falta_Cedula", new ActionMessage("errors.falta_Cedula"));
            System.out.println("CEDULA REQUERIDA");
            saveErrors(request, errors);
            existe_error = true;
        } else if (!FormatUtility.validatePattern(numCedula, 2)) {
            errors.add("invalid_Cedula", new ActionMessage("errors.invalid_Cedula"));
            System.out.println("CEDULA INVALIDA");
            saveErrors(request, errors);
            existe_error = true;
        } else {
            System.out.println("CEDULA VALIDA");
        }

        // Valido que el Telefono
        if ((telefono == null) || (telefono.equals(""))) {
            errors.add("pr_faltaTelefono", new ActionMessage("errors.pr_faltaTelefono"));
            saveErrors(request, errors);
            existe_error = true;
        }
        if (telefono != null && !telefono.equals("")) {
            if (!FormatUtility.validatePattern(telefono, 2)) {
                errors.add("telefono_letras", new ActionMessage("errors.telefono_letras"));
                saveErrors(request, errors);
                existe_error = true;
            } else {
                tlf = Integer.parseInt(telefono.trim().replaceAll(" ", ""));
            }
        }

        if (existe_error) {
            return mapping.findForward(FAILURE);
        }

        PreReporte pr = new PreReporte();
        pr.setIngresa(ingresa);
        pr.setUbicacion(ubicacion);
        pr.setDescripcion(descripcion);
        pr.setPreReporte(id);

        ComunidadUniversitaria denunciante = new ComunidadUniversitaria();
        denunciante.setCi(cedula);
        denunciante.setNombre1(nombre);
        denunciante.setApellido1(apellido);
        denunciante.setTelefono(tlf);

        if (Modelo.DAL.PreReporte_DAO.actualizarPreReporte(pr)) {
            Modelo.DAL.ComunidadUniversitaria_DAO.actualizarComunidadUniversitaria(old_cedula,denunciante);
            return mapping.findForward(SUCCESS);
        } else {
            return mapping.findForward(FAILURE);
        }
    }
}
